#include"eeprom.h"

void eeprom_init(void)
{
    iic_init();
}
//写入一个字节
void eeprom_write(uint8_t add,uint8_t data)
{
    iic_start();
    iic_write(0xA0);
    wait_ack();

    iic_write(add);
    wait_ack();

    iic_write(data);
    wait_ack();
    iic_stop();
    Delay_ms(10);
}
//接受一个字节
uint8_t eeprom_read(uint8_t add)
{
    uint8_t data=0;
    iic_start();
    iic_write(0xA0);
    wait_ack();

    iic_write(add);
    wait_ack();

    iic_start();
    iic_write(0xA1);
    wait_ack();

    data=iic_read();
    iic_Nack();

    iic_stop();
    return data;
}
//写入多个字节
void eemprom_writebytes(uint8_t add,uint8_t *buf,uint8_t size)
{
    iic_start();
    iic_write(0xA0);
    wait_ack();

    iic_write(add);
    wait_ack();

    for(uint8_t i=0;i<size;i++)
    {
        iic_write(*buf++);
        wait_ack();
    }
    iic_stop();
    Delay_ms(10);
}
//读取多个字节
void eeprom_readbytes(uint8_t add,uint8_t *buf,uint8_t size)
{
    iic_start();
    iic_write(0xA0);
    wait_ack();

    iic_write(add);
    wait_ack();

    iic_start();
    iic_write(0xA1);
    wait_ack();

    for(uint8_t i=0;i<size;i++)
    {
        *buf++=iic_read();
        if(i<size-1)
        {
            iic_Ack();
        }
        else
        {
            iic_Nack();
        }
    }
    iic_stop();
}


// void iic_init(void);
// //开始信号
// void iic_start(void);
// //停止信号
// void iic_stop(void);
// //主机应答
// void iic_Ack(void);
// //主机不应答
// void iic_Nack(void);

// uint8_t wait_ack(void);
// //写信号
// void iic_write(uint8_t byte);
// //读信号
// uint8_t iic_read(void);
